home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / mint / filesy~1 / mfs609s.zoo / fsck / main.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-11-25  |  1.8 KB  |  126 lines

  1. /* This File is part of 'fsck' copyright S.N. Henson */
  2.  
  3. #define EXTERN /**/
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <unistd.h>
  9.  
  10. #include "fs.h"
  11. #include "global.h"
  12. #include "proto.h"
  13.  
  14. void main(argc,argv)
  15. int argc;
  16. char **argv;
  17. {
  18.     int rw;
  19.     int c;
  20.     extern void do_fsck1(),do_fsck2();
  21.     extern int __mint;
  22.  
  23.     extern int optind,opterr;
  24.     extern char *optarg;
  25.  
  26.     if(__mint==0)
  27.     {
  28.         fprintf(stderr,"Error: MiNT not actice\n");
  29.         exit(1);
  30.     }
  31.     rw=1;
  32.     opterr=0;
  33.     while( (c=getopt(argc,argv,"pyYnNd:D:sSRi:"))!=EOF )
  34.     {
  35.         switch(c)
  36.         {
  37.             case 'y':
  38.             case 'Y':
  39.             ally=1;
  40.             break;
  41.             
  42.             case 'n':
  43.             case 'N':
  44.             rw=0;
  45.             alln=1;
  46.             break;
  47.  
  48.             case 'd':
  49.             case 'D':
  50.             incr=atoi(optarg);
  51.             if( (incr<1) || (incr>8) || NPOW2(incr))
  52.             {
  53.                 fprintf(stderr,"Invalid Increment Value\n");
  54.                 exit(1);
  55.             }
  56.             break;
  57.  
  58.             case 's':
  59.             info=1;
  60.             break;
  61.  
  62.             case 'S':
  63.             info=2;
  64.             break;
  65.  
  66.             case 'R':
  67.             badroot=1;
  68.             break;
  69.  
  70.             case 'i':
  71.             comma_parse(optarg,&inums);
  72.             break;
  73. #if notyet
  74.             case 'u':
  75.             ul=malloc(sizeof(llist));
  76.             if(!ul) fatal("Out of Memory");
  77.             ul->member=(long)strdup(optarg);
  78.             ul->next=unlist;
  79.             unlist=ul;
  80.             break;
  81. #endif
  82.  
  83.             case 'p':
  84.             preen=1;
  85.             break;
  86.  
  87.             case '?':
  88.             usage();
  89.             break;        
  90.         }
  91.     }
  92.  
  93.     if( (argc-optind!=1) || opterr) usage();
  94.  
  95.     if(preen && (ally || alln))
  96.     {
  97.         fprintf(stderr,"-p option cannot be mixed with -n or -y\n");
  98.         exit(1);
  99.     }
  100.  
  101.     if(preen) ally=1;
  102.  
  103.     if(badroot && !incr)
  104.     {
  105.         fprintf(stderr,"'-R' option needs '-d'\n");
  106.         exit(1);
  107.     } 
  108.  
  109.     drvnam=strdup(argv[optind]);
  110.  
  111.     if( init_device(argv[optind],rw))
  112.     {
  113.         fprintf(stderr,"Can't Open Device %s\n",argv[optind]);
  114.         exit(1);
  115.     }
  116.  
  117.     read_tables();
  118.  
  119.     if(version) do_fsck2();
  120.     else do_fsck1();
  121.  
  122.     showinfo();
  123.     close_device();
  124.     exit(0);
  125. }
  126.